package com.jiajia.study.io;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 *
 * java io 学习
 * @author : zjj
 * @date : 2021-04-16 8:36
 */
public class Client {

    public static void main(String[] args) throws IOException {
        // test();
        // test1();
        
        // test3();
        // test4();
        test5();
    }

    /**
     * file 文件测试
     * 1 File代表是一个文件或者是一个文件目录（文件夹）
     * 2 File类涉及到的操作是关于文件或者文件目录的操作，
     *      包含创建，删除，重命名，修改时间，文件大小等信息
     *      不包含对文件内容的修改，对文件内容的修改就涉及到IO流了
     *
     *
     */
    private static void test(){
        File file = new File("D:\\IDEAWorkplace\\java_base_study\\src\\test");

        System.out.println("绝对路径：" + file.getAbsoluteFile());
        System.out.println("path:" + file.getPath());
        System.out.println("名称：" + file.getName());
        System.out.println("长度：" + file.length());
        System.out.println("创建时间：" + new Date(file.lastModified()));

    }

    /**
     * 获取文件目录下所有的文件，或者目录
     */
    private static void test1(){
        File file = new File("D:\\IDEAWorkplace\\java_base_study\\target");
        // 获取到的是文件名或者目录名
        String[] list = file.list();

        for (String fileName: list) {
            System.out.println("文件/文件目录名称:" + fileName);
        }

        System.out.println("============================================");
        // 获取到的是文件对象，或者文件目录对象
        File[] files = file.listFiles();

        for (File childFile: files) {
            System.out.println("子文件：" + childFile );

        }

    }

    /**
     * 将文件重命名为另外一个文件
     */
    private static void test3(){

        File file = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\java\\com\\jiajia\\study\\io\\Client1.java");

        File file1 = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\java\\com\\jiajia\\study\\io\\Client.java");

        file.renameTo(file1);

    }

    /**
     * 对文件进行一些判断
     */
    private static void test4(){

        File file = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\java\\com\\jiajia\\study\\io\\Client.java");

        System.out.println("是否是文件目录：" + file.isDirectory());
        System.out.println("是否是文件："+ file.isFile());
        System.out.println("文件："+file.exists());
        System.out.println("文件是否可读：" +file.canRead());

        System.out.println("文件是否可写：" + file.canWrite());
        System.out.println("文件是否是隐藏文件："+file.isHidden());

    }

    private static void test5() throws IOException {
        File file = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\java\\com\\jiajia\\study\\io\\Client1.java");
        // 只能在已有目录下才可以创建
        System.out.println(file.createNewFile());
        System.out.println("==================================创建文件夹======================================");
        File file1 = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\java\\com\\jiajia\\study\\io\\test\\test");
        System.out.println(file1.mkdir());
        System.out.println(file1.mkdirs());
        // mkdir 不可以多层创建，mkdirs 可以多层创建
        System.out.println("==================================创建文件======================================");
        File file2 = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\java\\com\\jiajia\\study\\io\\demo\\Client.java");
        System.out.println(file.mkdir());
        System.out.println(file.mkdirs());
        // 必须要有文件路径，才能在文件路径下创建文件
        System.out.println(file2.createNewFile());
    }
}
